<template>
  <div>
    <div class="footer_wrap">
      <!-- <a href="#/find">发现音乐</a>
      <a href="#/my">我的音乐</a>
      <a href="#/part">朋友</a> -->
      <!-- 声明式导航好处: -->
      <!-- 1. 替代了 a 标签, 不需要手动写 #, 会自动决定是否加 # -->
      <!-- 2. 当前被点击的 a 标签会自动添加类名: router-link-active -->
      <!-- 本质: 最终还是会被渲染成 a 标签 -->
      <router-link to="/find">发现音乐</router-link>
      <router-link to="/my">我的音乐</router-link>
      <!-- 传参分为两种 -->
      <!-- 1. query: 不需要额外配置, 直接在 url 后面加 ? 即可传参, 到目标组件中使用 $route.query 接收 -->
      <!-- 2. params: 必须先去路由规则中配置 /:name 再到路径上传参, 在目标组件中使用 $route.params 接收 -->
      <router-link to="/part?name=李帅&age=36">朋友-query传参</router-link>
      <router-link to="/part/袁疆/17">朋友-params传参</router-link>

      <!-- <span @click="$router.push('/find')">发现音乐</span>
      <span @click="goto('/my', 'My')">我的音乐</span>
      <span @click="gotoPartQuery('/part', 'Part')">朋友-query传参</span>
      <span @click="gotoPartParams('/part', 'Part')">朋友-params传参</span> -->
    </div>
    <div class="top">
      <!-- Camel-Case -->
      <!-- <RouterView></RouterView> -->
      <!-- Kebab-Case -->
      <!-- 7. 使用 router-view 全局组件设置挂载点 -->
      <!-- 说人话就是占位符, 将来组件切换时替换到此处 -->
      <!-- 组件缓存: 使用 keep-alive 组件包裹 router-view 组件即可 -->
      <!-- 匹配缓存: include 包含 exclude 不包含, 写组件的 name 属性即可 -->
      <!-- 需要提前给组件设置 name 属性 -->
      <!-- 如果只写 include 表示只包含指定的组件 -->
      <!-- 如果只写 exclude 表示只排除指定的组件 -->
      <!-- 如果要匹配多个组件, 可以用逗号分隔 -->
      <!-- <keep-alive exclude="My,Part"> -->
      <keep-alive>
        <router-view></router-view>
      </keep-alive>
    </div>
  </div>
</template>

<script>
export default {
  methods: {
    goto(path, name) {
      // console.log('我想去发现音乐')
      // push() 可以直接传入字符串: 路径
      // this.$router.push('/find')
      // this.$router.push(path)
      this.$router
        .push({
          // name
          path,
        })
        .catch((e) => e); // 我捕获了错误, 但什么都不处理, 直接返回错误对象
    },
    gotoPartQuery(path, name) {
      // 注意事项: path 传参会忽略 params
      this.$router
        .push({
          path,
          query: {
            name: "张三",
            age: 18,
          },
          // params: {
          //   name: '李四',
          //   age:28
          // }
        })
        .catch((e) => e);
    },
    gotoPartParams(path, name) {
      // 推荐组合: name + params
      // path + query
      this.$router
        .push({
          name,
          // query: {
          //   name: '张三',
          //   age: 18
          // },
          params: {
            name: "李四",
            age: 28,
          },
        })
        .catch((e) => e);
    },
  },
};
</script>

<style scoped>
.footer_wrap {
  position: fixed;
  left: 0;
  top: 0;
  display: flex;
  width: 100%;
  text-align: center;
  background-color: #333;
  color: #ccc;
}
.footer_wrap a,
span {
  flex: 1;
  text-decoration: none;
  padding: 20px 0;
  line-height: 20px;
  background-color: #333;
  color: #ccc;
  border: 1px solid black;
}
.footer_wrap a:hover,
span:hover {
  background-color: #555;
}
.top {
  padding-top: 62px;
}

.router-link-active {
  background-color: black !important;
}
</style>